جزوه · فصل پنجم · جلسه ۳ · بوت لودر GRUB ← بازگشت به فهرست
📘 فصل پنجم · جلسه ۳ بوت لودر GRUB
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
از این بخش در امتحان سوال می‌آید. حتماً نکات کلیدی را حفظ کنید!
🚀 قبل از شروع، یه مثال ساده:

GRUB مثل دربان یه ساختمان است. وقتی سیستم روشن می‌شود، GRUB به شما نشان می‌دهد که کدام سیستم‌عامل را می‌خواهید اجرا کنید. اگر چند سیستم‌عامل روی سیستم نصب باشد، GRUB منوی انتخاب را به شما نشان می‌دهد. این جلسه همه چیز را درباره GRUB به شما یاد می‌دهد!

▍ تاریخچه GRUB

GRUB مخفف GRand Unified Bootloader است. اولین نسخه آن در سال ۱۹۹۹ منتشر شد و بعدها به عنوان Bootloader پیش‌فرض بسیاری از توزیع‌های لینوکس انتخاب شد. نسخه جدید آن در سال ۲۰۰۵ ارائه شد و به نسخه قبلی، GRUB Legacy گفته می‌شود.

📌 نکته مهم:

GRUB Legacy نسخه قدیمی است و GRUB 2 نسخه جدید که امروزه در اکثر توزیع‌ها استفاده می‌شود.

▍ GRUB Legacy (نسخه قدیمی)

• فایل پیکربندی

GRUB Legacy تنظیمات خود را در فایل menu.lst که در مسیر /boot/grub/menu.lst قرار دارد، ذخیره می‌کند. در توزیع‌های رد هت، این فایل grub.conf نام دارد.

/boot/grub/menu.lst # در دبیان /boot/grub/grub.conf # در رد هت

• دو بخش اصلی فایل menu.lst

• تنظیمات کلی در GRUB Legacy

تنظیمات توضیح
color رنگ‌های منو (پس‌زمینه و متن)
default گزینه پیش‌فرض منو
fallback گزینه جایگزین در صورت شکست گزینه پیش‌فرض
hiddenmenu عدم نمایش منو (منو مخفی)
splashimage تصویر پس‌زمینه منو
timeout زمان انتظار برای انتخاب (به ثانیه)
📝 مثال:
default 0
timeout 10
color white/blue yellow/blue

توضیح: منوی پیش‌فرض گزینه اول (0) است، ۱۰ ثانیه انتظار می‌کشد و رنگ‌ها به این صورت تنظیم شده‌اند.

• بخش راه‌اندازی سیستم‌عامل در GRUB Legacy

دستور توضیح
title عنوانی که در منو نمایش داده می‌شود
root دیسک و پارتیشنی که /boot روی آن قرار دارد
kernel مسیر فایل هسته (kernel) در /boot
initrd فایل Initial RAM Disk که درایورهای اولیه را شامل می‌شود
rootnoverify برای سیستم‌های غیرلینوکسی مانند ویندوز
عدد دیسک در GRUB از صفر شروع می‌شود! یعنی هارد دیسک اول hd0 است.
📝 مثال:
title Linux
root (hd0,0)
kernel /vmlinuz-5.15.0 root=/dev/sda1
initrd /initrd.img-5.15.0

توضیح: این بخش یک سیستم‌عامل لینوکس را با هسته مشخص و فایل initrd راه‌اندازی می‌کند.

• نصب GRUB Legacy

برای نصب GRUB Legacy از دستور grub-install استفاده می‌شود:

┌──(ya3in㉿kali)-[~] └─$ grub-install /dev/sda └─$ grub-install 'hd(0,0)'

توضیح: دستور اول GRUB را روی MBR دیسک /dev/sda نصب می‌کند و دستور دوم روی پارتیشن اول دیسک اول.

▍ GRUB 2 (نسخه جدید)

• تفاوت‌های اصلی با GRUB Legacy

GRUB Legacy

  • فایل: /boot/grub/menu.lst
  • ویرایش مستقیم فایل
  • پشتیبانی محدود از UEFI

GRUB 2

  • فایل: /boot/grub/grub.cfg
  • فایل اصلی را ویرایش نکنید!
  • پشتیبانی کامل از UEFI
  • از فایل‌های پیکربندی در /etc/grub.d/ استفاده می‌کند
در GRUB 2 هرگز فایل grub.cfg را به‌طور مستقیم ویرایش نکنید! از دستور grub-mkconfig استفاده کنید.

• مسیر فایل‌های GRUB 2

/boot/grub/grub.cfg # BIOS /boot/efi/EFI/centos/grub.cfg # UEFI

• پیکربندی GRUB 2

برای پیکربندی GRUB 2، فایل اصلی را به‌طور مستقیم ویرایش نکنید. به جای آن:

┌──(ya3in㉿kali)-[~] └─$ sudo grub-mkconfig -o /boot/grub/grub.cfg

توضیح: این دستور فایل grub.cfg را از روی تنظیمات موجود در /etc/default/grub و /etc/grub.d/ می‌سازد.

در رد هت از دستور grub2-mkconfig استفاده می‌شود: grub2-mkconfig -o /boot/grub2/grub.cfg

• کلیدهای میانبر در منوی GRUB 2

کلید توضیح
Arrow انتخاب گزینه منو
C ورود به محیط خط فرمان GRUB
E ویرایش گزینه انتخاب‌شده
Enter بوت کردن گزینه انتخاب‌شده
P ورود رمز عبور (در صورت نیاز)

▍ پارامترهای هسته در GRUB

پارامترهای هسته به شما امکان می‌دهند تا رفتار سیستم را در زمان بوت تغییر دهید. این پارامترها را می‌توانید با زدن کلید E در منوی GRUB ویرایش کنید.

پارامتر توضیح
console= تنظیم دستگاه کنسول
debug فعال‌سازی دیباگ هسته
init= اجرای برنامه مشخص به جای /sbin/init (مثلاً /bin/bash)
initrd= تغییر مسیر فایل Initial RAM Disk
mem تنظیم مقدار حافظه در دسترس
ro سیستم فایل ریشه را فقط خواندنی Mount می‌کند
root= تغییر سیستم فایل ریشه
rootflags= تنظیم گزینه‌های Mount برای سیستم فایل ریشه
rw سیستم فایل ریشه را خواندنی-نوشتنی Mount می‌کند
selinux=0 غیرفعال‌سازی SELinux در زمان بوت
single, 1, S بوت در حالت تک‌کاربره (Single-User) برای SysVinit
systemd.unit= بوت به target مشخص در systemd (مثلاً rescue.target)
پارامترهای single، 1 و S برای ورود به حالت تک‌کاربره و systemd.unit=rescue.target برای ورود به حالت rescue در systemd استفاده می‌شوند.
✅ جمع‌بندی مهم برای امتحان:
  • GRUB Legacy: فایل /boot/grub/menu.lst یا grub.conf
  • GRUB 2: فایل /boot/grub/grub.cfg (آن را ویرایش نکنید!)
  • برای به‌روزرسانی GRUB 2: از grub-mkconfig -o /boot/grub/grub.cfg استفاده کنید.
  • در رد هت: از grub2-mkconfig -o /boot/grub2/grub.cfg استفاده کنید.
  • پارامترهای مهم هسته: ro، rw، root=، init=، single، 1، S، systemd.unit=
  • شماره‌گذاری دیسک‌ها در GRUB از صفر شروع می‌شود.